#ifndef MOCHA_DETAIL_API_H_INCLUDED
#define MOCHA_DETAIL_API_H_INCLUDED

/**
 * @file
 */

#ifdef WIN32 // Windows.
	#if defined(__GNUC__) // GCC.
		#define MOCHA_API __attribute__((__cdecl__))
		#ifdef MOCHA_EXPORT_PLUGINS
			#define MOCHA_PLUGIN_API __attribute__((__cdecl__)) __attribute__((__dllexport__))
		#else
			#define MOCHA_PLUGIN_API __attribute__((__cdecl__)) __attribute__((__dllimport__))
		#endif
	#elif defined(__MSVC__) // MSVC.
		#define MOCHA_API __cdecl
		#ifdef MOCHA_EXPORT_PLUGINS
			#define MOCHA_PLUGIN_API __cdecl __declspec(dllexport)
		#else
			#define MOCHA_PLUGIN_API __cdecl __declspec(dllimport)
		#endif
	#else // Other compiler.
		#define MOCHA_API
		#define MOCHA_PLUGIN_API
	#endif
#else // Linux.
	#define MOCHA_API
	#define MOCHA_PLUGIN_API
#endif

#ifdef __cplusplus
	#define MOCHA_EXTERN extern "C"
#else
	#define MOCHA_EXTERN extern
#endif

#endif

